package base.map.findPath
{
	/**
	 *矩形导航网格节点，其中的x、y、width、height指的是组成导航网格的小单元格
	 * @author devin
	 * 
	 */	
	public class FindPathNode
	{
		/**
		 *导航网格块高
		 */		
		public var tileHeight:int;
		
		/**
		 *起始X 
		 */		
		public var x:int;
		/**
		 *起始Y 
		 */		
		public var y:int;
		/**
		 *节点宽
		 */		
		public var width:int=1;
		/**
		 *节点高 
		 */		
		public var height:int=1;
		/**
		 *全部代价 
		 */		
		public var f:Number;
		/**
		 *从起点到当前点的代价 
		 */		
		public var g:Number;
		/**
		 *从当前点到终点的估计代价
		 */		
		public var h:Number;
		/**
		 *当前点的父节点 
		 */		
		public var parent:FindPathNode;
		/**
		 *入口单元 
		 */		
		public var enterCell:FindPathCell;
		/**
		 *仅值
		 */		
		public function get costMultiplier():Number
		{
			return 1.0;
		}
		
		/**
		 *与当前导航网格相连接的导航网格 
		 */		
		private var _linkNodes:Vector.<FindPathNode>=new Vector.<FindPathNode>();
		
		public function FindPathNode()
		{
		}
		
		/**
		 *增加当前导航网格相连接的导航网格
		 * @param findPathNode 导航网格
		 * 
		 */		
		public function addLinkNode(findPathNode:FindPathNode):void
		{
			if(linkNodes.indexOf(findPathNode)!=-1)return;
			linkNodes.push(findPathNode);
		}

		/**
		 * 与当前导航网格相连接的导航网格
		 */
		public function get linkNodes():Vector.<FindPathNode>
		{
			return _linkNodes;
		}
		
		public function dispose():void
		{
			parent=null;
			_linkNodes=null;
		}
	}
}